"""
@name : logset
@author : wenyao
@projectname: xsfh
"""
#
#日志：日志是一种可以追踪某些软件运行时所发生事件的方法
#通过日志可以做什么事情？
#1、排错
#    分析和定位故障
#2、程序调试
#    了解程序的运行情况，是否正常
#3、用户行为分析

#为什么用这个东西
#这个东西有什么好处
#用另外的代替可不可以


#python  logging 模块
#五个日志级别：（处理事情要分一个轻重缓急）
#日志等级     数值表示      描述
# DEBUG         10       最详细的日志信息，常用于调试
# INFO          20       详细日志信息仅次于DEBUG，记录关键节点的信息
# WARNING       30(默认等级) 当前有不期望的事情发生
# ERROR         40        发生错误问题导致某些功能不能正常使用
# CRITICAL      50        发生了严重错误导致程序不能运行了

# import logging
# LOG_FORMAT = "%(asctime)s-%(levelname)s:%(message)s"
# DATE_FORMAT = "%m/%d/%Y %H:%M:%S"
# logging.basicConfig(level=logging.DEBUG, format=LOG_FORMAT,
#                     datefmt=DATE_FORMAT, filename="my.log")
# logging.debug("this is debug message")
# logging.info("this is info message")
# logging.warning("this is warning message")
# logging.error("this is error message")

#logging 日志系统的四大组件
#日志器  Logger
#处理器  Handler
#过滤器  Filter
#格式器  Formatter

import logging
from logging.handlers import RotatingFileHandler, TimedRotatingFileHandler

#获取logger对象，用于记录日志
logger = logging.getLogger()

#handler对象，用于写入日志，规定日志输出到哪里
#写入文件
fh = logging.FileHandler("my.log")
#日志轮转
#fh = RotatingFileHandler("my.log", maxBytes=500, backupCount=2)
#按照两天时间轮转一次，保留三个备份
# fh = TimedRotatingFileHandler("my.log", when="D", interval=2, backupCount=3)
#输出到屏幕
ch = logging.StreamHandler()

#创建formatter，用于处理日志格式
formatter = logging.Formatter("%(asctime)s-%(levelname)s:%(message)s")

#绑定formatter到hander上
fh.setFormatter(formatter)

#绑定handler到logger对象上
logger.addHandler(fh)
logger.addHandler(ch)

#设置日志等级
logger.setLevel(logging.DEBUG)
for i in range(1000):
   logger.warning("this is warning....")

#生成logger对象的时候，没有传递参数进去，那生成的就是root logger  类似 /
#传递name进去之后 类似 /sc
#子日志器会继承父日志器的配置
# logger2 = logging.getLogger("sc")
# logger2.warning("this is sc2 logger")
#
# #类似/sc/xx
# logger3 = logging.getLogger("sc.xx")
# logger3.warning("test test test")

#作业编写日志记录装饰器
#比如执行了func1函数，那就日志记录“执行了func1函数，花费多久时间” ，日志的格式要包含时间
#日志要输出到文件（sc.log）和屏幕

